home *** CD-ROM | disk | FTP | other *** search
- /******************************************************************************
- *
- * NSSDC/CDF CDF INTERNAL interface for FORTRAN.
- *
- * Version 1.3, 29-Feb-92, ST Systems (STX)
- *
- * Modification history:
- *
- * V1.0 30-Jan-91, J Love Original version (for CDF V2.1).
- * V1.1 6-Aug-91, J Love Use 'CDFlib'. If variable is a character data
- * type, check for %DESCR (if VMS).
- * V1.2 24-Oct-91, J Love Modified for IBM-PC and IBM-RS6000 ports.
- * V1.3 29-Feb-92, J Love CDF V2.2.
- *
- ******************************************************************************/
-
- #include "cdflib.h"
-
- /******************************************************************************
- * MACRO to check the status from a call to 'CDFlib'.
- ******************************************************************************/
-
- #define CHECKstatus(Tstatus,Pstatus) { \
- if (Tstatus != CDF_OK) \
- if (Tstatus < CDF_WARN) /* ERROR */ \
- Pstatus = Tstatus; \
- else \
- if (Tstatus > CDF_OK) { /* INFO */ \
- if (Pstatus >= CDF_OK) Pstatus = Tstatus; \
- } \
- else /* WARNING */ \
- Pstatus = Tstatus; \
- }
-
-
- #if defined(vms)
- /******************************************************************************
- *
- * Notes (for VMS version):
- *
- * To make the user's life a little easier, all names and attribute
- * values (for attributes of data types CDF_CHAR and CDF_UCHAR) may be passed
- * in and out by either reference or descriptor. The default passing mode
- * for an embedded character string (e.g., CALL subr (..., 'string', ...)) or
- * a CHARACTER variable symbol (e.g., CALL subr (..., ATTR_NAME, ...) where
- * ATTR_NAME is defined as CHARACTER*8) is by descriptor when passing from
- * FORTRAN to C in VMS.
- *
- * An embedded character string could be enclosed in %REF() to force
- * passing by reference since the FORTRAN compiler puts a NUL character at
- * the end of these strings as expected by the CDF V2.0 library (written in
- * C). Enclosing a CHARACTER variable symbol in %REF() will result in
- * an error, however, because a NUL character is not placed at the ends of
- * these type strings by the FORTRAN compiler. The user would have to
- * supply the terminating NUL. By letting the passing mode default to by-
- * descriptor, this interface will supply the terminating NUL.
- *
- * The main difference here from CDF Version 1 is that the %REF() is
- * not needed when passing out names and attribute values. Also, %REF()
- * is not necessary when passing the value of a variable that is a character
- * data type.
- *
- ******************************************************************************/
-
- /******************************************************************************
- * CDF_lib. Note that CDFstatus is returned both as an argument (the last
- * argument) and as the value of the function.
- ******************************************************************************/
-
- CDFstatus CDF_lib (va_alist)
- va_dcl
- {
- va_list ap;
- CDFstatus Pstatus = CDF_OK; /* pending status */
- CDFstatus Tstatus; /* temporary status */
- CDFstatus *status; /* address of status variable */
- long fnc; /* function to perform */
- long item; /* item on which to perform a function */
-
- CDFid CURid = RESERVED_CDFID;
- CDFstatus CURstatus = RESERVED_CDFSTATUS;
-
- va_start (ap);
-
- fnc = *(va_arg (ap, long *));
-
- while (fnc != NULL_)
- switch (fnc) {
- case CREATE_:
- for (;;) {
- item = *(va_arg (ap, long *));
- switch (item) {
- case CDF_: {
- void *CDFname = va_arg (ap, void *);
- long *numDims = va_arg (ap, long *);
- long *dimSizes = va_arg (ap, long *);
- CDFid *id = va_arg (ap, CDFid *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (CREATE_, CDF_,
- DESCRtoREFnul(CDFname,
- CDF_PATHNAME_LEN),
- *numDims, dimSizes, id,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) CURid = *id;
- }
- break;
- }
- case VAR_: {
- long varNum;
- void *varName = va_arg (ap, void *);
- long *dataType = va_arg (ap, long *);
- long *numElements = va_arg (ap, long *);
- long *recVariance = va_arg (ap, long *);
- long *dimVariances = va_arg (ap, long *);
- long *var_num = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CREATE_, VAR_, DESCRtoREFnul
- (varName,
- CDF_VAR_NAME_LEN),
- *dataType, *numElements,
- *recVariance,
- dimVariances, &varNum,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) *var_num = varNum;
- }
- break;
- }
- case ATTR_: {
- long attrNum;
- void *attrname = va_arg (ap, void *);
- long *scope = va_arg (ap, long *);
- long *attr_num = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CREATE_, ATTR_, DESCRtoREFnul
- (attrname,
- CDF_ATTR_NAME_LEN),
- *scope, &attrNum,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) *attr_num = attrNum;
- }
- break;
- }
- default: {
- fnc = item;
- break;
- }
- }
- if (fnc == item) break;
- }
- break;
-
- case OPEN_:
- for (;;) {
- item = *(va_arg (ap, long *));
- switch (item) {
- case CDF_: {
- void *CDFname = va_arg (ap, void *);
- CDFid *id = va_arg (ap, CDFid *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (OPEN_, CDF_, DESCRtoREFnul
- (CDFname,
- CDF_PATHNAME_LEN), id,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) CURid = *id;
- }
- break;
- }
- default: {
- fnc = item;
- break;
- }
- }
- if (fnc == item) break;
- }
- break;
-
- case DELETE_:
- for (;;) {
- item = *(va_arg (ap, long *));
- switch (item) {
- case CDF_: {
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- DELETE_, CDF_,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- default: {
- fnc = item;
- break;
- }
- }
- if (fnc == item) break;
- }
- break;
-
- case CLOSE_:
- for (;;) {
- item = *(va_arg (ap, long *));
- switch (item) {
- case CDF_: {
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CLOSE_, CDF_,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case VAR_: {
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CLOSE_, VAR_,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- default: {
- fnc = item;
- break;
- }
- }
- if (fnc == item) break;
- }
- break;
-
- case SELECT_:
- for (;;) {
- item = *(va_arg (ap, long *));
- switch (item) {
- case CDF_: {
- CDFid *id = va_arg (ap, CDFid *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, *id,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) CURid = *id;
- }
- break;
- }
- case CDF_STATUS_: {
- CDFstatus *status = va_arg (ap, CDFstatus *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_STATUS_, *status,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) CURstatus = *status;
- }
- break;
- }
- case VAR_: {
- long *var_num = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- VAR_, *var_num - 1,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case VAR_NAME_: {
- void *varName = va_arg (ap, void *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- VAR_NAME_,
- DESCRtoREFnul(varName,
- CDF_VAR_NAME_LEN),
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_RECNUMBER_: {
- long *recnum = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CDF_RECNUMBER_, *recnum - 1,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_RECCOUNT_: {
- long *reccount = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CDF_RECCOUNT_, *reccount,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_RECINTERVAL_: {
- long *recinterval = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CDF_RECINTERVAL_, *recinterval,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_DIMINDICES_: {
- long i;
- long numDims;
- long Cindices[CDF_MAX_DIMS];
- long *indices = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, CDF_NUMDIMS_, &numDims,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) {
- for (i = 0; i < numDims; i++) Cindices[i] = indices[i] - 1;
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CDF_DIMINDICES_, Cindices,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- }
- break;
- }
- case CDF_DIMCOUNTS_: {
- long *counts = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CDF_DIMCOUNTS_, counts,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_DIMINTERVALS_: {
- long *intervals = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CDF_DIMINTERVALS_, intervals,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case VAR_SEQPOS_: {
- long Cindices[CDF_MAX_DIMS];
- long numDims;
- long i;
- long *rec_num = va_arg (ap, long *);
- long *indices = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, CDF_NUMDIMS_, &numDims,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) {
- for (i = 0; i < numDims; i++) Cindices[i] = indices[i] - 1;
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- VAR_SEQPOS_,
- *rec_num - 1, Cindices,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- }
- break;
- }
- case ATTR_: {
- long *attrnum = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- ATTR_, *attrnum - 1,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case ATTR_NAME_: {
- void *attrName = va_arg (ap, void *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- ATTR_NAME_,
- DESCRtoREFnul(attrName,
- CDF_ATTR_NAME_LEN),
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case ENTRY_: {
- long *entrynum = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- ENTRY_, *entrynum - 1,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- default: {
- fnc = item;
- break;
- }
- }
- if (fnc == item) break;
- }
- break;
-
- case CONFIRM_:
- for (;;) {
- item = *(va_arg (ap, long *));
- switch (item) {
- #if 0 /* Doesn't make sense to do this anymore. */
- case CDF_: {
- CDFid *id = va_arg (ap, CDFid *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (CONFIRM_, CDF_, id,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- #endif
- #if 0 /* Doesn't make sense to do this anymore. */
- case CDF_STATUS_: {
- CDFstatus *status = va_arg (ap, CDFstatus *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (CONFIRM_, CDF_STATUS_, status,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- #endif
- case CDF_NAME_: {
- char name[CDF_PATHNAME_LEN+1];
- void *cdf_filename = va_arg (ap, void *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CONFIRM_, CDF_NAME_, name,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) CtoFORTstring (name, cdf_filename,
- CDF_PATHNAME_LEN);
- }
- break;
- }
- case VAR_: {
- long varNum;
- long *var_num = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CONFIRM_, VAR_, &varNum,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) *var_num = varNum + 1;
- }
- break;
- }
- case CDF_RECNUMBER_: {
- long recNum;
- long *recnum = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CONFIRM_, CDF_RECNUMBER_, &recNum,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) *recnum = recNum + 1;
- }
- break;
- }
- case CDF_RECCOUNT_: {
- long *reccount = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CONFIRM_, CDF_RECCOUNT_, reccount,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_RECINTERVAL_: {
- long *recinterval = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CONFIRM_, CDF_RECINTERVAL_, recinterval,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_DIMINDICES_: {
- long i;
- long numDims;
- long Cindices[CDF_MAX_DIMS];
- long *indices = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, CDF_NUMDIMS_, &numDims,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CONFIRM_, CDF_DIMINDICES_, Cindices,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) {
- for (i = 0; i < numDims; i++) indices[i] = Cindices[i] + 1;
- }
- }
- }
- break;
- }
- case CDF_DIMCOUNTS_: {
- long *counts = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CONFIRM_, CDF_DIMCOUNTS_, counts,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_DIMINTERVALS_: {
- long *intervals = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CONFIRM_, CDF_DIMINTERVALS_, intervals,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case VAR_SEQPOS_: {
- long numDims;
- long recNum;
- long Cindices[CDF_MAX_DIMS];
- long i;
- long *rec_num = va_arg (ap, long *);
- long *indices = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, CDF_NUMDIMS_, &numDims,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CONFIRM_, VAR_SEQPOS_,
- &recNum, Cindices,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) {
- *rec_num = recNum + 1;
- for (i = 0; i < numDims; i++) indices[i] = Cindices[i] + 1;
- }
- }
- }
- break;
- }
- case ATTR_: {
- long attrNum;
- long *attr_num = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CONFIRM_, ATTR_, &attrNum,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) *attr_num = attrNum + 1;
- }
- break;
- }
- case ENTRY_: {
- long entryNum;
- long *entry_num = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CONFIRM_, ENTRY_, &entryNum,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) *entry_num = entryNum + 1;
- }
- break;
- }
- default: {
- fnc = item;
- break;
- }
- }
- if (fnc == item) break;
- }
- break;
-
- case GET_:
- for (;;) {
- item = *(va_arg (ap, long *));
- switch (item) {
- case CDF_NUMDIMS_: {
- long *numDims = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, CDF_NUMDIMS_, numDims,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_DIMSIZES_: {
- long *dimsize = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, CDF_DIMSIZES_, dimsize,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_ENCODING_: {
- long *encoding = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, CDF_ENCODING_, encoding,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_MAJORITY_: {
- long *majority = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, CDF_MAJORITY_, majority,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_FORMAT_: {
- long *format = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, CDF_FORMAT_, format,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_COPYRIGHT_: {
- char text[CDF_DOCUMENT_LEN+1];
- void *copyRight = va_arg (ap, void *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, CDF_COPYRIGHT_, text,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) CtoFORTstring (text, copyRight,
- CDF_DOCUMENT_LEN);
- }
- break;
- }
- case LIB_COPYRIGHT_: {
- char text[CDF_DOCUMENT_LEN+1];
- void *copyRight = va_arg (ap, void *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (GET_, LIB_COPYRIGHT_, text,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) CtoFORTstring (text, copyRight,
- CDF_DOCUMENT_LEN);
- }
- break;
- }
- case CDF_NUMVARS_: {
- long *numvars = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, CDF_NUMVARS_, numvars,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_NUMATTRS_: {
- long *numattr = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, CDF_NUMATTRS_, numattr,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_MAXREC_: {
- long maxRec;
- long *max_rec = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, CDF_MAXREC_, &maxRec,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) *max_rec = maxRec + 1;
- }
- break;
- }
- case CDF_VERSION_: {
- long *version = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, CDF_VERSION_, version,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_RELEASE_: {
- long *release = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, CDF_RELEASE_, release,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_INCREMENT_: {
- long *increment = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, CDF_INCREMENT_, increment,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case LIB_VERSION_: {
- long *version = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (GET_, LIB_VERSION_, version,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case LIB_RELEASE_: {
- long *release = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (GET_, LIB_RELEASE_, release,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case LIB_INCREMENT_: {
- long *increment = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (GET_, LIB_INCREMENT_, increment,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case LIB_subINCREMENT_: {
- char subIncr;
- void *subincrement = va_arg (ap, void *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (GET_, LIB_subINCREMENT_, &subIncr,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) CtoFORTstring (&subIncr,
- subincrement, 1);
- }
- break;
- }
- case VAR_NAME_: {
- char varName[CDF_VAR_NAME_LEN+1];
- void *name = va_arg (ap, void *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, VAR_NAME_, varName,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) CtoFORTstring (varName, name,
- CDF_VAR_NAME_LEN);
- }
- break;
- }
- case VAR_DATATYPE_: {
- long *datatype = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, VAR_DATATYPE_, datatype,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case VAR_NUMELEMS_: {
- long *numElements = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, VAR_NUMELEMS_, numElements,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case VAR_RECVARY_: {
- long *recvary = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, VAR_RECVARY_, recvary,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case VAR_DIMVARYS_: {
- long *dimVarys = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, VAR_DIMVARYS_, dimVarys,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case VAR_MAXREC_: {
- long varMaxRec;
- long *var_max_rec = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, VAR_MAXREC_, &varMaxRec,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) *var_max_rec = varMaxRec + 1;
- }
- break;
- }
- case VAR_NUMBER_: {
- long varNum;
- void *name = va_arg (ap, void *);
- long *varnum = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, VAR_NUMBER_, DESCRtoREFnul
- (name,
- CDF_VAR_NAME_LEN),
- &varNum,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) *varnum = varNum + 1;
- }
- break;
- }
- case VAR_EXTENDRECS_: {
- long *NextendRecs = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, VAR_EXTENDRECS_, NextendRecs,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case VAR_FILLVALUE_: {
- long dataType;
- void *fillValue = va_arg (ap, void *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, VAR_DATATYPE_, &dataType,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, VAR_FILLVALUE_,
- STRINGdataType(dataType) ?
- DESCRtoREF(fillValue) : fillValue,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- }
- break;
- }
- case VAR_DATA_: {
- long dataType;
- void *value = va_arg (ap, void *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, VAR_DATATYPE_, &dataType,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, VAR_DATA_,
- STRINGdataType(dataType) ?
- DESCRtoREF(value) : value,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- }
- break;
- }
- case VAR_HYPERDATA_: {
- long dataType;
- void *buffer = va_arg (ap, void *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, VAR_DATATYPE_, &dataType,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, VAR_HYPERDATA_,
- STRINGdataType(dataType) ?
- DESCRtoREF(buffer) : buffer,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- }
- break;
- }
- case VAR_SEQDATA_: {
- long dataType;
- void *value = va_arg (ap, void *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, VAR_DATATYPE_, &dataType,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, VAR_SEQDATA_,
- STRINGdataType(dataType) ?
- DESCRtoREF(value) : value,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- }
- break;
- }
- case ATTR_SCOPE_: {
- long *scope = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, ATTR_SCOPE_, scope,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case ATTR_NAME_: {
- char name[CDF_ATTR_NAME_LEN+1];
- void *attrname = va_arg (ap, void *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, ATTR_NAME_, name,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) CtoFORTstring (name, attrname,
- CDF_ATTR_NAME_LEN);
- }
- break;
- }
- case ATTR_NUMBER_: {
- long attrNum;
- void *name = va_arg (ap, void *);
- long *attrnum = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, ATTR_NUMBER_, DESCRtoREFnul
- (name,
- CDF_ATTR_NAME_LEN),
- &attrNum,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) *attrnum = attrNum + 1;
- }
- break;
- }
- case ATTR_MAXENTRY_: {
- long maxEntry;
- long *max_entry = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, ATTR_MAXENTRY_, &maxEntry,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) *max_entry = maxEntry + 1;
- }
- break;
- }
- case ATTR_NUMENTRIES_: {
- long *numEntries = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, ATTR_NUMENTRIES_, numEntries,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case ENTRY_DATATYPE_: {
- long *datatype = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, ENTRY_DATATYPE_, datatype,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case ENTRY_NUMELEMS_: {
- long *numelem = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, ENTRY_NUMELEMS_, numelem,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case ENTRY_DATA_: {
- long dataType;
- void *value = va_arg (ap, void *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, ENTRY_DATATYPE_, &dataType,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, ENTRY_DATA_,
- STRINGdataType(dataType) ?
- DESCRtoREF(value) : value,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- }
- break;
- }
- case STATUS_TEXT_: {
- char text[CDF_STATUSTEXT_LEN+1];
- void *textPtr = va_arg (ap, void *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_STATUS_, CURstatus,
- GET_, STATUS_TEXT_, text,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) CtoFORTstring (text, textPtr,
- CDF_STATUSTEXT_LEN);
- }
- break;
- }
- default: {
- fnc = item;
- break;
- }
- }
- if (fnc == item) break;
- }
- break;
-
- case PUT_:
- for (;;) {
- item = *(va_arg (ap, long *));
- switch (item) {
- case CDF_ARRAY_: {
- long *numDims = va_arg (ap, long *);
- long *dimSizes = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- PUT_, CDF_ARRAY_, *numDims, dimSizes,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_ENCODING_: {
- long *encoding = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- PUT_, CDF_ENCODING_, *encoding,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_MAJORITY_: {
- long *majority = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- PUT_, CDF_MAJORITY_, *majority,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_FORMAT_: {
- long *format = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- PUT_, CDF_FORMAT_, *format,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case VAR_NAME_: {
- void *varName = va_arg (ap, void *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- PUT_, VAR_NAME_, DESCRtoREFnul
- (varName,
- CDF_VAR_NAME_LEN),
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case VAR_DATASPEC_: {
- long *dataType = va_arg (ap, long *);
- long *numElements = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- PUT_, VAR_DATASPEC_, *dataType,
- *numElements,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case VAR_RECVARY_: {
- long *recVariance = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- PUT_, VAR_RECVARY_, *recVariance,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case VAR_DIMVARYS_: {
- long *dimVarys = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- PUT_, VAR_DIMVARYS_, dimVarys,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case VAR_INITIALRECS_: {
- long *NinitialRecs = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- PUT_, VAR_INITIALRECS_, *NinitialRecs,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case VAR_EXTENDRECS_: {
- long *NextendRecs = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- PUT_, VAR_EXTENDRECS_, *NextendRecs,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case VAR_FILLVALUE_: {
- long dataType;
- void *fillValue = va_arg (ap, void *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, VAR_DATATYPE_, &dataType,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- PUT_, VAR_FILLVALUE_,
- STRINGdataType(dataType) ?
- DESCRtoREF(fillValue) : fillValue,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- }
- break;
- }
- case VAR_DATA_: {
- long dataType;
- void *value = va_arg (ap, void *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, VAR_DATATYPE_, &dataType,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- PUT_, VAR_DATA_,
- STRINGdataType(dataType) ?
- DESCRtoREF(value) : value,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- }
- break;
- }
- case VAR_HYPERDATA_: {
- long dataType;
- void *buffer = va_arg (ap, void *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, VAR_DATATYPE_, &dataType,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- PUT_, VAR_HYPERDATA_,
- STRINGdataType(dataType) ?
- DESCRtoREF(buffer) : buffer,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- }
- break;
- }
- case VAR_SEQDATA_: {
- long dataType;
- void *value = va_arg (ap, void *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, VAR_DATATYPE_, &dataType,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- PUT_, VAR_SEQDATA_,
- STRINGdataType(dataType) ?
- DESCRtoREF(value) : value,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- }
- break;
- }
- case ATTR_SCOPE_: {
- long *scope = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- PUT_, ATTR_SCOPE_, *scope,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case ATTR_NAME_: {
- void *attrname = va_arg (ap, void *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- PUT_, ATTR_NAME_, DESCRtoREFnul
- (attrname,
- CDF_ATTR_NAME_LEN),
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case ENTRY_DATA_: {
- long *dataType = va_arg (ap, long *);
- long *numElements = va_arg (ap, long *);
- void *value = va_arg (ap, void *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- PUT_, ENTRY_DATA_, *dataType, *numElements,
- STRINGdataType(*dataType) ?
- DESCRtoREF(value) : value,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- default: {
- fnc = item;
- break;
- }
- }
- if (fnc == item) break;
- }
- break;
-
- default: {
- va_end (ap);
- return BAD_FNC_OR_ITEM;
- }
- }
-
- status = va_arg (ap, long *);
- *status = Pstatus;
-
- va_end (ap);
-
- return Pstatus;
- }
- #endif
-
-
- #if defined(unix)
- /******************************************************************************
- *
- * Notes (for UNIX version):
- *
- * All passing between FORTRAN and C on UNIX systems is done by reference.
- * When character strings are passed between FORTRAN and C, extra arguments
- * are added to the argument list containing the lengths of those character
- * strings.
- *
- * Entry points have been made lowercase because the FORTRAN compiler
- * converts all uppercase characters to lowercase in entry points. This way
- * the linker will find everything. Unix FORTRAN compilers and linkers also
- * seem to like trailing '_'s (except on the IBM-RS6000/AIX).
- *
- ******************************************************************************/
-
- /******************************************************************************
- * CDF_lib. Note that CDFstatus is returned both as an argument (the last
- * argument) and as the value of the function.
- ******************************************************************************/
-
- #if defined(AIX)
- CDFstatus cdf_lib (va_alist)
- #else
- CDFstatus cdf_lib_ (va_alist)
- #endif
- va_dcl
- {
- va_list ap;
- CDFstatus Pstatus = CDF_OK; /* pending status */
- CDFstatus Tstatus; /* temporary status */
- CDFstatus *status; /* address of status variable */
- long fnc; /* function to perform */
- long item; /* item on which to perform a function */
- long i;
- long stringCount = 0;
- long *stringLengths; /* lengths of (possible) character strings
- passed in - some arguments may or may not
- be character strings (eg. var. data) */
-
- CDFid CURid = RESERVED_CDFID;
- CDFstatus CURstatus = RESERVED_CDFSTATUS;
-
- /******************************************************************************
- * Scan argument list counting number of (possible) strings passed in.
- ******************************************************************************/
-
- va_start (ap);
-
- fnc = *(va_arg (ap, long *));
-
- while (fnc != NULL_)
- switch (fnc) {
- case CREATE_:
- for (;;) {
- item = *(va_arg (ap, long *));
- switch (item) {
- case CDF_: {
- char *CDFname = va_arg (ap, char *);
- long *numDims = va_arg (ap, long *);
- long *dimSizes = va_arg (ap, long *);
- CDFid *id = va_arg (ap, CDFid *);
- stringCount++;
- break;
- }
- case VAR_: {
- char *varName = va_arg (ap, char *);
- long *dataType = va_arg (ap, long *);
- long *numElements = va_arg (ap, long *);
- long *recVariance = va_arg (ap, long *);
- long *dimVariances = va_arg (ap, long *);
- long *var_num = va_arg (ap, long *);
- stringCount++;
- break;
- }
- case ATTR_: {
- char *attrname = va_arg (ap, char *);
- long *scope = va_arg (ap, long *);
- long *attr_num = va_arg (ap, long *);
- stringCount++;
- break;
- }
- default: {
- fnc = item;
- break;
- }
- }
- if (fnc == item) break;
- }
- break;
-
- case OPEN_:
- for (;;) {
- item = *(va_arg (ap, long *));
- switch (item) {
- case CDF_: {
- char *CDFname = va_arg (ap, char *);
- CDFid *id = va_arg (ap, CDFid *);
- stringCount++;
- break;
- }
- default: {
- fnc = item;
- break;
- }
- }
- if (fnc == item) break;
- }
- break;
-
- case DELETE_:
- for (;;) {
- item = *(va_arg (ap, long *));
- switch (item) {
- case CDF_: {
- break;
- }
- default: {
- fnc = item;
- break;
- }
- }
- if (fnc == item) break;
- }
- break;
-
- case CLOSE_:
- for (;;) {
- item = *(va_arg (ap, long *));
- switch (item) {
- case CDF_: {
- break;
- }
- case VAR_: {
- break;
- }
- default: {
- fnc = item;
- break;
- }
- }
- if (fnc == item) break;
- }
- break;
-
- case SELECT_:
- for (;;) {
- item = *(va_arg (ap, long *));
- switch (item) {
- case CDF_: {
- CDFid *id = va_arg (ap, CDFid *);
- break;
- }
- case CDF_STATUS_: {
- CDFstatus *status = va_arg (ap, CDFstatus *);
- break;
- }
- case VAR_: {
- long *var_num = va_arg (ap, long *);
- break;
- }
- case VAR_NAME_: {
- char *varName = va_arg (ap, char *);
- stringCount++;
- break;
- }
- case CDF_RECNUMBER_: {
- long *recnum = va_arg (ap, long *);
- break;
- }
- case CDF_RECCOUNT_: {
- long *reccount = va_arg (ap, long *);
- break;
- }
- case CDF_RECINTERVAL_: {
- long *recinterval = va_arg (ap, long *);
- break;
- }
- case CDF_DIMINDICES_: {
- long *indices = va_arg (ap, long *);
- break;
- }
- case CDF_DIMCOUNTS_: {
- long *counts = va_arg (ap, long *);
- break;
- }
- case CDF_DIMINTERVALS_: {
- long *intervals = va_arg (ap, long *);
- break;
- }
- case VAR_SEQPOS_: {
- long *rec_num = va_arg (ap, long *);
- long *indices = va_arg (ap, long *);
- break;
- }
- case ATTR_: {
- long *attrnum = va_arg (ap, long *);
- break;
- }
- case ATTR_NAME_: {
- char *attrName = va_arg (ap, char *);
- stringCount++;
- break;
- }
- case ENTRY_: {
- long *entrynum = va_arg (ap, long *);
- break;
- }
- default: {
- fnc = item;
- break;
- }
- }
- if (fnc == item) break;
- }
- break;
-
- case CONFIRM_:
- for (;;) {
- item = *(va_arg (ap, long *));
- switch (item) {
- case CDF_: {
- CDFid *id = va_arg (ap, CDFid *);
- break;
- }
- case CDF_STATUS_: {
- CDFstatus *status = va_arg (ap, CDFstatus *);
- break;
- }
- case CDF_NAME_: {
- char *cdf_filename = va_arg (ap, char *);
- stringCount++;
- break;
- }
- case VAR_: {
- long *var_num = va_arg (ap, long *);
- break;
- }
- case CDF_RECNUMBER_: {
- long *recnum = va_arg (ap, long *);
- break;
- }
- case CDF_RECCOUNT_: {
- long *reccount = va_arg (ap, long *);
- break;
- }
- case CDF_RECINTERVAL_: {
- long *recinterval = va_arg (ap, long *);
- break;
- }
- case CDF_DIMINDICES_: {
- long *indices = va_arg (ap, long *);
- break;
- }
- case CDF_DIMCOUNTS_: {
- long *counts = va_arg (ap, long *);
- break;
- }
- case CDF_DIMINTERVALS_: {
- long *intervals = va_arg (ap, long *);
- break;
- }
- case VAR_SEQPOS_: {
- long *rec_num = va_arg (ap, long *);
- long *indices = va_arg (ap, long *);
- break;
- }
- case ATTR_: {
- long *attr_num = va_arg (ap, long *);
- break;
- }
- case ENTRY_: {
- long *entry_num = va_arg (ap, long *);
- break;
- }
- default: {
- fnc = item;
- break;
- }
- }
- if (fnc == item) break;
- }
- break;
-
- case GET_:
- for (;;) {
- item = *(va_arg (ap, long *));
- switch (item) {
- case CDF_NUMDIMS_: {
- long *numDims = va_arg (ap, long *);
- break;
- }
- case CDF_DIMSIZES_: {
- long *dimsize = va_arg (ap, long *);
- break;
- }
- case CDF_ENCODING_: {
- long *encoding = va_arg (ap, long *);
- break;
- }
- case CDF_MAJORITY_: {
- long *majority = va_arg (ap, long *);
- break;
- }
- case CDF_FORMAT_: {
- long *format = va_arg (ap, long *);
- break;
- }
- case CDF_COPYRIGHT_: {
- char *copyRight = va_arg (ap, char *);
- stringCount++;
- break;
- }
- case LIB_COPYRIGHT_: {
- char *copyRight = va_arg (ap, char *);
- stringCount++;
- break;
- }
- case CDF_NUMVARS_: {
- long *numvars = va_arg (ap, long *);
- break;
- }
- case CDF_NUMATTRS_: {
- long *numattr = va_arg (ap, long *);
- break;
- }
- case CDF_MAXREC_: {
- long *max_rec = va_arg (ap, long *);
- break;
- }
- case CDF_VERSION_: {
- long *version = va_arg (ap, long *);
- break;
- }
- case CDF_RELEASE_: {
- long *release = va_arg (ap, long *);
- break;
- }
- case CDF_INCREMENT_: {
- long *increment = va_arg (ap, long *);
- break;
- }
- case LIB_VERSION_: {
- long *version = va_arg (ap, long *);
- break;
- }
- case LIB_RELEASE_: {
- long *release = va_arg (ap, long *);
- break;
- }
- case LIB_INCREMENT_: {
- long *increment = va_arg (ap, long *);
- break;
- }
- case LIB_subINCREMENT_: {
- char *subincrement = va_arg (ap, char *);
- stringCount++;
- break;
- }
- case VAR_NAME_: {
- char *name = va_arg (ap, char *);
- stringCount++;
- break;
- }
- case VAR_DATATYPE_: {
- long *datatype = va_arg (ap, long *);
- break;
- }
- case VAR_NUMELEMS_: {
- long *numElements = va_arg (ap, long *);
- break;
- }
- case VAR_RECVARY_: {
- long *recvary = va_arg (ap, long *);
- break;
- }
- case VAR_DIMVARYS_: {
- long *dimVarys = va_arg (ap, long *);
- break;
- }
- case VAR_MAXREC_: {
- long *var_max_rec = va_arg (ap, long *);
- break;
- }
- case VAR_NUMBER_: {
- char *name = va_arg (ap, char *);
- long *varnum = va_arg (ap, long *);
- stringCount++;
- break;
- }
- case VAR_EXTENDRECS_: {
- long *NextendRecs = va_arg (ap, long *);
- break;
- }
- case VAR_FILLVALUE_: {
- void *fillValue = va_arg (ap, void *);
- stringCount++;
- break;
- }
- case VAR_DATA_: {
- void *value = va_arg (ap, void *);
- stringCount++;
- break;
- }
- case VAR_HYPERDATA_: {
- void *buffer = va_arg (ap, void *);
- stringCount++;
- break;
- }
- case VAR_SEQDATA_: {
- void *value = va_arg (ap, void *);
- stringCount++;
- break;
- }
- case ATTR_SCOPE_: {
- long *scope = va_arg (ap, long *);
- break;
- }
- case ATTR_NAME_: {
- char *attrname = va_arg (ap, char *);
- stringCount++;
- break;
- }
- case ATTR_NUMBER_: {
- char *name = va_arg (ap, void *);
- long *attrnum = va_arg (ap, long *);
- stringCount++;
- break;
- }
- case ATTR_MAXENTRY_: {
- long *max_entry = va_arg (ap, long *);
- break;
- }
- case ATTR_NUMENTRIES_: {
- long *numEntries = va_arg (ap, long *);
- break;
- }
- case ENTRY_DATATYPE_: {
- long *datatype = va_arg (ap, long *);
- break;
- }
- case ENTRY_NUMELEMS_: {
- long *numelem = va_arg (ap, long *);
- break;
- }
- case ENTRY_DATA_: {
- void *value = va_arg (ap, void *);
- stringCount++;
- break;
- }
- case STATUS_TEXT_: {
- char *textPtr = va_arg (ap, void *);
- stringCount++;
- break;
- }
- default: {
- fnc = item;
- break;
- }
- }
- if (fnc == item) break;
- }
- break;
-
- case PUT_:
- for (;;) {
- item = *(va_arg (ap, long *));
- switch (item) {
- case CDF_ARRAY_: {
- long *numDims = va_arg (ap, long *);
- long *dimSizes = va_arg (ap, long *);
- break;
- }
- case CDF_ENCODING_: {
- long *encoding = va_arg (ap, long *);
- break;
- }
- case CDF_MAJORITY_: {
- long *majority = va_arg (ap, long *);
- break;
- }
- case CDF_FORMAT_: {
- long *format = va_arg (ap, long *);
- break;
- }
- case VAR_NAME_: {
- char *varName = va_arg (ap, char *);
- stringCount++;
- break;
- }
- case VAR_DATASPEC_: {
- long *dataType = va_arg (ap, long *);
- long *numElements = va_arg (ap, long *);
- break;
- }
- case VAR_RECVARY_: {
- long *recVariance = va_arg (ap, long *);
- break;
- }
- case VAR_DIMVARYS_: {
- long *dimVarys = va_arg (ap, long *);
- break;
- }
- case VAR_INITIALRECS_: {
- long *NinitialRecs = va_arg (ap, long *);
- break;
- }
- case VAR_EXTENDRECS_: {
- long *NextendRecs = va_arg (ap, long *);
- break;
- }
- case VAR_FILLVALUE_: {
- void *value = va_arg (ap, void *);
- stringCount++;
- break;
- }
- case VAR_DATA_: {
- void *value = va_arg (ap, void *);
- stringCount++;
- break;
- }
- case VAR_HYPERDATA_: {
- void *buffer = va_arg (ap, void *);
- stringCount++;
- break;
- }
- case VAR_SEQDATA_: {
- void *value = va_arg (ap, void *);
- stringCount++;
- break;
- }
- case ATTR_SCOPE_: {
- long *scope = va_arg (ap, long *);
- break;
- }
- case ATTR_NAME_: {
- char *attrname = va_arg (ap, char *);
- stringCount++;
- break;
- }
- case ENTRY_DATA_: {
- long *dataType = va_arg (ap, long *);
- long *numElements = va_arg (ap, long *);
- void *value = va_arg (ap, void *);
- stringCount++;
- break;
- }
- default: {
- fnc = item;
- break;
- }
- }
- if (fnc == item) break;
- }
- break;
-
- default: {
- va_end (ap);
- return BAD_FNC_OR_ITEM;
- }
- }
-
- status = va_arg (ap, long *);
-
- /******************************************************************************
- * Store character strings lengths.
- ******************************************************************************/
-
- if (stringCount > 0) {
- stringLengths = (long *) malloc (stringCount * sizeof(long));
- if (stringLengths == NULL) {
- *status = BAD_MALLOC;
- return BAD_MALLOC;
- }
- for (i = 0; i < stringCount; i++) stringLengths[i] = va_arg (ap, long);
- }
- else
- stringLengths = NULL;
-
- va_end (ap);
-
- /******************************************************************************
- * Scan argument list again performing functions.
- ******************************************************************************/
-
- stringCount = 0; /* start at beginning of list of string lengths */
-
- va_start (ap);
-
- fnc = *(va_arg (ap, long *));
-
- while (fnc != NULL_)
- switch (fnc) {
- case CREATE_:
- for (;;) {
- item = *(va_arg (ap, long *));
- switch (item) {
- case CDF_: {
- char *CDFname = va_arg (ap, char *);
- long *numDims = va_arg (ap, long *);
- long *dimSizes = va_arg (ap, long *);
- CDFid *id = va_arg (ap, CDFid *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (CREATE_,
- CDF_, NULterminate
- (CDFname,
- stringLengths[stringCount]),
- *numDims, dimSizes, id,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) {
- stringCount++;
- CURid = *id;
- }
- }
- break;
- }
- case VAR_: {
- long varNum;
- char *varName = va_arg (ap, char *);
- long *dataType = va_arg (ap, long *);
- long *numElements = va_arg (ap, long *);
- long *recVariance = va_arg (ap, long *);
- long *dimVariances = va_arg (ap, long *);
- long *var_num = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CREATE_,
- VAR_, NULterminate
- (varName,
- stringLengths[stringCount]),
- *dataType, *numElements,
- *recVariance,
- dimVariances, &varNum,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) {
- *var_num = varNum;
- stringCount++;
- }
- }
- break;
- }
- case ATTR_: {
- long attrNum;
- char *attrname = va_arg (ap, char *);
- long *scope = va_arg (ap, long *);
- long *attr_num = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CREATE_,
- ATTR_, NULterminate
- (attrname,
- stringLengths[stringCount]),
- *scope, &attrNum,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) {
- *attr_num = attrNum;
- stringCount++;
- }
- }
- break;
- }
- default: {
- fnc = item;
- break;
- }
- }
- if (fnc == item) break;
- }
- break;
-
- case OPEN_:
- for (;;) {
- item = *(va_arg (ap, long *));
- switch (item) {
- case CDF_: {
- char *CDFname = va_arg (ap, char *);
- CDFid *id = va_arg (ap, CDFid *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (OPEN_, CDF_,
- NULterminate
- (CDFname,
- stringLengths[stringCount]),
- id,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) {
- stringCount++;
- CURid = *id;
- }
- }
- break;
- }
- default: {
- fnc = item;
- break;
- }
- }
- if (fnc == item) break;
- }
- break;
-
- case DELETE_:
- for (;;) {
- item = *(va_arg (ap, long *));
- switch (item) {
- case CDF_: {
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- DELETE_, CDF_,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- default: {
- fnc = item;
- break;
- }
- }
- if (fnc == item) break;
- }
- break;
-
- case CLOSE_:
- for (;;) {
- item = *(va_arg (ap, long *));
- switch (item) {
- case CDF_: {
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CLOSE_, CDF_,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case VAR_: {
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CLOSE_, VAR_,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- default: {
- fnc = item;
- break;
- }
- }
- if (fnc == item) break;
- }
- break;
-
- case SELECT_:
- for (;;) {
- item = *(va_arg (ap, long *));
- switch (item) {
- case CDF_: {
- CDFid *id = va_arg (ap, CDFid *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, *id,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) CURid = *id;
- }
- break;
- }
- case CDF_STATUS_: {
- CDFstatus *status = va_arg (ap, CDFstatus *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_STATUS_, *status,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) CURstatus = *status;
- }
- break;
- }
- case VAR_: {
- long *var_num = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- VAR_, *var_num - 1,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case VAR_NAME_: {
- char *varName = va_arg (ap, char *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- VAR_NAME_,
- NULterminate
- (varName,
- stringLengths[stringCount]),
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) stringCount++;
- }
- break;
- }
- case CDF_RECNUMBER_: {
- long *recnum = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CDF_RECNUMBER_, *recnum - 1,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_RECCOUNT_: {
- long *reccount = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CDF_RECCOUNT_, *reccount,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_RECINTERVAL_: {
- long *recinterval = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CDF_RECINTERVAL_, *recinterval,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_DIMINDICES_: {
- long i;
- long numDims;
- long Cindices[CDF_MAX_DIMS];
- long *indices = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, CDF_NUMDIMS_, &numDims,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) {
- for (i = 0; i < numDims; i++) Cindices[i] = indices[i] - 1;
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CDF_DIMINDICES_, Cindices,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- }
- break;
- }
- case CDF_DIMCOUNTS_: {
- long *counts = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CDF_DIMCOUNTS_, counts,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_DIMINTERVALS_: {
- long *intervals = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CDF_DIMINTERVALS_, intervals,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case VAR_SEQPOS_: {
- long numDims;
- long Cindices[CDF_MAX_DIMS];
- long *rec_num = va_arg (ap, long *);
- long *indices = va_arg (ap, long *);
- long i;
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, CDF_NUMDIMS_, &numDims,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) {
- for (i = 0; i < numDims; i++) Cindices[i] = indices[i] - 1;
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- VAR_SEQPOS_,
- *rec_num - 1, Cindices,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- }
- break;
- }
- case ATTR_: {
- long *attrnum = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- ATTR_, *attrnum - 1,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case ATTR_NAME_: {
- char *attrName = va_arg (ap, char *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- ATTR_NAME_,
- NULterminate
- (attrName,
- stringLengths[stringCount]),
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) stringCount++;
- }
- break;
- }
- case ENTRY_: {
- long *entrynum = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- ENTRY_, *entrynum - 1,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- default: {
- fnc = item;
- break;
- }
- }
- if (fnc == item) break;
- }
- break;
-
- case CONFIRM_:
- for (;;) {
- item = *(va_arg (ap, long *));
- switch (item) {
- #if 0 /* Doesn't make sense to do this anymore. */
- case CDF_: {
- CDFid *id = va_arg (ap, CDFid *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (CONFIRM_, CDF_, id,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- #endif
- #if 0 /* Doesn't make sense to do this anymore. */
- case CDF_STATUS_: {
- CDFstatus *status = va_arg (ap, CDFstatus *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (CONFIRM_, CDF_STATUS_, status,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- #endif
- case CDF_NAME_: {
- char name[CDF_PATHNAME_LEN+1];
- char *cdf_filename = va_arg (ap, char *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CONFIRM_, CDF_NAME_, name,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) {
- CtoFORTstring (name, cdf_filename,
- stringLengths[stringCount]);
- stringCount++;
- }
- }
- break;
- }
- case VAR_: {
- long varNum;
- long *var_num = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CONFIRM_, VAR_, &varNum,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) *var_num = varNum + 1;
- }
- break;
- }
- case CDF_RECNUMBER_: {
- long recNum;
- long *recnum = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CONFIRM_, CDF_RECNUMBER_, &recNum,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) *recnum = recNum + 1;
- }
- break;
- }
- case CDF_RECCOUNT_: {
- long *reccount = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CONFIRM_, CDF_RECCOUNT_, reccount,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_RECINTERVAL_: {
- long *recinterval = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CONFIRM_, CDF_RECINTERVAL_, recinterval,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_DIMINDICES_: {
- long i;
- long numDims;
- long Cindices[CDF_MAX_DIMS];
- long *indices = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, CDF_NUMDIMS_, &numDims,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CONFIRM_, CDF_DIMINDICES_, Cindices,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) {
- for (i = 0; i < numDims; i++) indices[i] = Cindices[i] + 1;
- }
- }
- }
- break;
- }
- case CDF_DIMCOUNTS_: {
- long *counts = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CONFIRM_, CDF_DIMCOUNTS_, counts,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_DIMINTERVALS_: {
- long *intervals = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CONFIRM_, CDF_DIMINTERVALS_, intervals,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case VAR_SEQPOS_: {
- long numDims;
- long Cindices[CDF_MAX_DIMS];
- long recNum;
- long i;
- long *rec_num = va_arg (ap, long *);
- long *indices = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, CDF_NUMDIMS_, &numDims,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CONFIRM_, VAR_SEQPOS_, &recNum,
- Cindices,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) {
- *rec_num = recNum + 1;
- for (i = 0; i < numDims; i++) indices[i] = Cindices[i] + 1;
- }
- }
- }
- break;
- }
- case ATTR_: {
- long attrNum;
- long *attr_num = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CONFIRM_, ATTR_, &attrNum,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) *attr_num = attrNum + 1;
- }
- break;
- }
- case ENTRY_: {
- long entryNum;
- long *entry_num = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- CONFIRM_, ENTRY_, &entryNum,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) *entry_num = entryNum + 1;
- }
- break;
- }
- default: {
- fnc = item;
- break;
- }
- }
- if (fnc == item) break;
- }
- break;
-
- case GET_:
- for (;;) {
- item = *(va_arg (ap, long *));
- switch (item) {
- case CDF_NUMDIMS_: {
- long *numDims = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, CDF_NUMDIMS_, numDims,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_DIMSIZES_: {
- long *dimsize = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, CDF_DIMSIZES_, dimsize,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_ENCODING_: {
- long *encoding = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, CDF_ENCODING_, encoding,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_MAJORITY_: {
- long *majority = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, CDF_MAJORITY_, majority,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_FORMAT_: {
- long *format = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, CDF_FORMAT_, format,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_COPYRIGHT_: {
- char text[CDF_DOCUMENT_LEN+1];
- char *copyRight = va_arg (ap, char *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, CDF_COPYRIGHT_, text,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) {
- CtoFORTstring (text, copyRight,
- stringLengths[stringCount]);
- stringCount++;
- }
- }
- break;
- }
- case LIB_COPYRIGHT_: {
- char text[CDF_DOCUMENT_LEN+1];
- char *copyRight = va_arg (ap, char *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (GET_, LIB_COPYRIGHT_, text,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) {
- CtoFORTstring (text, copyRight,
- stringLengths[stringCount]);
- stringCount++;
- }
- }
- break;
- }
- case CDF_NUMVARS_: {
- long *numvars = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, CDF_NUMVARS_, numvars,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_NUMATTRS_: {
- long *numattr = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, CDF_NUMATTRS_, numattr,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_MAXREC_: {
- long maxRec;
- long *max_rec = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, CDF_MAXREC_, &maxRec,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) *max_rec = maxRec + 1;
- }
- break;
- }
- case CDF_VERSION_: {
- long *version = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, CDF_VERSION_, version,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_RELEASE_: {
- long *release = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, CDF_RELEASE_, release,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_INCREMENT_: {
- long *increment = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, CDF_INCREMENT_, increment,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case LIB_VERSION_: {
- long *version = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (GET_, LIB_VERSION_, version,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case LIB_RELEASE_: {
- long *release = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (GET_, LIB_RELEASE_, release,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case LIB_INCREMENT_: {
- long *increment = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (GET_, LIB_INCREMENT_, increment,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case LIB_subINCREMENT_: {
- char subIncr;
- char *subincrement = va_arg (ap, char *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (GET_, LIB_subINCREMENT_, &subIncr,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) {
- CtoFORTstring (&subIncr, subincrement, 1);
- stringCount++;
- }
- }
- break;
- }
- case VAR_NAME_: {
- char varName[CDF_VAR_NAME_LEN+1];
- char *name = va_arg (ap, char *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, VAR_NAME_, varName,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) {
- CtoFORTstring (varName, name,
- stringLengths[stringCount]);
- stringCount++;
- }
- }
- break;
- }
- case VAR_DATATYPE_: {
- long *datatype = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, VAR_DATATYPE_, datatype,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case VAR_NUMELEMS_: {
- long *numElements = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, VAR_NUMELEMS_, numElements,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case VAR_RECVARY_: {
- long *recvary = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, VAR_RECVARY_, recvary,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case VAR_DIMVARYS_: {
- long *dimVarys = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, VAR_DIMVARYS_, dimVarys,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case VAR_MAXREC_: {
- long varMaxRec;
- long *var_max_rec = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, VAR_MAXREC_, &varMaxRec,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) *var_max_rec = varMaxRec + 1;
- }
- break;
- }
- case VAR_NUMBER_: {
- long varNum;
- char *name = va_arg (ap, char *);
- long *varnum = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, VAR_NUMBER_,
- NULterminate
- (name,
- stringLengths[stringCount]),
- &varNum,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) {
- *varnum = varNum + 1;
- stringCount++;
- }
- }
- break;
- }
- case VAR_EXTENDRECS_: {
- long *NextendRecs = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, VAR_EXTENDRECS_, NextendRecs,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case VAR_FILLVALUE_: {
- long dataType;
- void *fillValue = va_arg (ap, void *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, VAR_DATATYPE_, &dataType,
- VAR_DATA_, fillValue,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN)
- if (STRINGdataType(dataType)) stringCount++;
- }
- break;
- }
- case VAR_DATA_: {
- long dataType;
- void *value = va_arg (ap, void *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, VAR_DATATYPE_, &dataType,
- VAR_DATA_, value,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN)
- if (STRINGdataType(dataType)) stringCount++;
- }
- break;
- }
- case VAR_HYPERDATA_: {
- long dataType;
- void *buffer = va_arg (ap, void *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, VAR_DATATYPE_, &dataType,
- VAR_HYPERDATA_, buffer,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN)
- if (STRINGdataType(dataType)) stringCount++;
- }
- break;
- }
- case VAR_SEQDATA_: {
- long dataType;
- void *value = va_arg (ap, void *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, VAR_DATATYPE_, &dataType,
- VAR_SEQDATA_, value,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN)
- if (STRINGdataType(dataType)) stringCount++;
- }
- break;
- }
- case ATTR_SCOPE_: {
- long *scope = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, ATTR_SCOPE_, scope,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case ATTR_NAME_: {
- char name[CDF_ATTR_NAME_LEN+1];
- char *attrname = va_arg (ap, char *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, ATTR_NAME_, name,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) {
- CtoFORTstring (name, attrname,
- stringLengths[stringCount]);
- stringCount++;
- }
- }
- break;
- }
- case ATTR_NUMBER_: {
- long attrNum;
- char *name = va_arg (ap, char *);
- long *attrnum = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, ATTR_NUMBER_,
- NULterminate
- (name,
- stringLengths[stringCount]),
- &attrNum,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) {
- *attrnum = attrNum + 1;
- stringCount++;
- }
- }
- break;
- }
- case ATTR_MAXENTRY_: {
- long maxEntry;
- long *max_entry = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, ATTR_MAXENTRY_, &maxEntry,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) *max_entry = maxEntry + 1;
- }
- break;
- }
- case ATTR_NUMENTRIES_: {
- long *numEntries = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, ATTR_NUMENTRIES_, numEntries,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case ENTRY_DATATYPE_: {
- long *datatype = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, ENTRY_DATATYPE_, datatype,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case ENTRY_NUMELEMS_: {
- long *numelem = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, ENTRY_NUMELEMS_, numelem,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case ENTRY_DATA_: {
- long dataType;
- void *value = va_arg (ap, void *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, ENTRY_DATATYPE_, &dataType,
- ENTRY_DATA_, value,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN)
- if (STRINGdataType(dataType)) stringCount++;
- }
- break;
- }
- case STATUS_TEXT_: {
- char text[CDF_STATUSTEXT_LEN+1];
- char *textPtr = va_arg (ap, char *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_STATUS_, CURstatus,
- GET_, STATUS_TEXT_, text,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) {
- CtoFORTstring (text, textPtr,
- stringLengths[stringCount]);
- stringCount++;
- }
- }
- break;
- }
- default: {
- fnc = item;
- break;
- }
- }
- if (fnc == item) break;
- }
- break;
-
- case PUT_:
- for (;;) {
- item = *(va_arg (ap, long *));
- switch (item) {
- case CDF_ARRAY_: {
- long *numDims = va_arg (ap, long *);
- long *dimSizes = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- PUT_, CDF_ARRAY_, *numDims, dimSizes,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_ENCODING_: {
- long *encoding = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- PUT_, CDF_ENCODING_, *encoding,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_MAJORITY_: {
- long *majority = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- PUT_, CDF_MAJORITY_, *majority,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case CDF_FORMAT_: {
- long *format = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- PUT_, CDF_FORMAT_, *format,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case VAR_NAME_: {
- char *varName = va_arg (ap, char *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- PUT_, VAR_NAME_,
- NULterminate
- (varName,
- stringLengths[stringCount]),
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) stringCount++;
- }
- break;
- }
- case VAR_DATASPEC_: {
- long *dataType = va_arg (ap, long *);
- long *numElements = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- PUT_, VAR_DATASPEC_, *dataType,
- *numElements,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case VAR_RECVARY_: {
- long *recVariance = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- PUT_, VAR_RECVARY_, *recVariance,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case VAR_DIMVARYS_: {
- long *dimVarys = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- PUT_, VAR_DIMVARYS_, dimVarys,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case VAR_INITIALRECS_: {
- long *NinitialRecs = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- PUT_, VAR_INITIALRECS_, *NinitialRecs,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case VAR_EXTENDRECS_: {
- long *NextendRecs = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- PUT_, VAR_EXTENDRECS_, *NextendRecs,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case VAR_FILLVALUE_: {
- long dataType;
- void *value = va_arg (ap, void *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, VAR_DATATYPE_, &dataType,
- PUT_, VAR_FILLVALUE_, value,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN)
- if (STRINGdataType(dataType)) stringCount++;
- }
- break;
- }
- case VAR_DATA_: {
- long dataType;
- void *value = va_arg (ap, void *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, VAR_DATATYPE_, &dataType,
- PUT_, VAR_DATA_, value,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN)
- if (STRINGdataType(dataType)) stringCount++;
- }
- break;
- }
- case VAR_HYPERDATA_: {
- long dataType;
- void *buffer = va_arg (ap, void *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, VAR_DATATYPE_, &dataType,
- PUT_, VAR_HYPERDATA_, buffer,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN)
- if (STRINGdataType(dataType)) stringCount++;
- }
- break;
- }
- case VAR_SEQDATA_: {
- long dataType;
- void *value = va_arg (ap, void *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- GET_, VAR_DATATYPE_, &dataType,
- PUT_, VAR_SEQDATA_, value,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN)
- if (STRINGdataType(dataType)) stringCount++;
- }
- break;
- }
- case ATTR_SCOPE_: {
- long *scope = va_arg (ap, long *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- PUT_, ATTR_SCOPE_, *scope,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- }
- break;
- }
- case ATTR_NAME_: {
- char *attrname = va_arg (ap, char *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- PUT_, ATTR_NAME_,
- NULterminate
- (attrname,
- stringLengths[stringCount]),
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN) stringCount++;
- }
- break;
- }
- case ENTRY_DATA_: {
- long *dataType = va_arg (ap, long *);
- long *numElements = va_arg (ap, long *);
- void *value = va_arg (ap, void *);
- if (Pstatus > CDF_WARN) {
- Tstatus = CDFlib (SELECT_, CDF_, CURid,
- PUT_, ENTRY_DATA_, *dataType,
- *numElements, value,
- NULL_);
- CHECKstatus (Tstatus, Pstatus);
- if (Pstatus > CDF_WARN)
- if (STRINGdataType(*dataType)) stringCount++;
- }
- break;
- }
- default: {
- fnc = item;
- break;
- }
- }
- if (fnc == item) break;
- }
- break;
-
- default: {
- va_end (ap);
- if (stringLengths != NULL) free (stringLengths);
- return BAD_FNC_OR_ITEM;
- }
- }
-
- va_end (ap);
-
- if (stringLengths != NULL) free (stringLengths);
-
- *status = Pstatus;
- return Pstatus;
- }
- #endif
-